«Тот же сайт»; и "того же происхождения";

«Same-site» и «same-origin» — часто цитируемые, но часто неправильно понимаемые термины. Например, они используются в контексте переходов страниц, запросов fetch() , файлов cookie, открывающихся всплывающих окон, встроенных ресурсов и iframe. На этой странице объясняется, что это такое и чем они отличаются друг от друга.

Источник

Источник
Структура происхождения.

«Origin» — это комбинация схемы (также известной как протокол , например HTTP или HTTPS ), имени хоста и порта (если указан). Например, если задан URL https://www.example.com:443/foo , «origin» — https://www.example.com:443 .

«Одно и то же происхождение» и «перекрестное происхождение»

Веб-сайты, имеющие одинаковую комбинацию схемы, имени хоста и порта, считаются «одного происхождения». Все остальное считается «кросс-источником».

Происхождение А Происхождение B «Одно и то же происхождение» или «перекрестное происхождение»?
https://www.example.com:443 https://www.evil.com :443 Кросс-происхождение: разные домены
https://example.com :443 Кросс-происхождение: разные поддомены
https:// логин .example.com:443 Кросс-происхождение: разные поддомены
http ://www.example.com:443 Кросс-происхождение: разные схемы
https://www.example.com: 80 Кросс-происхождение: разные порты
https://www.example.com:443 Одинаковое происхождение: точное совпадение
https://www.example.com Тот же источник: неявный номер порта (443) совпадает

Сайт

Сайт (TLD+1)
Части URL, составляющие сайт.

Домены верхнего уровня (TLD), такие как .com и .org , перечислены в базе данных корневой зоны . В предыдущем
например, "site" — это комбинация схемы , TLD и части домена непосредственно перед ней (мы называем ее TLD+1). Например, если задан URL https://www.example.com:443/foo , "site" — это https://example.com .

Список публичных суффиксов и eTLD

Для доменов с такими элементами, как .co.jp или .github.io , простое использование .jp или .io недостаточно для идентификации «сайта». Не существует алгоритмического способа определить уровень регистрируемых доменов для конкретного TLD. Чтобы помочь с этим, Public Suffix List определяет список публичных суффиксов, также называемых эффективными TLD (eTLD) . Список eTLD поддерживается на publicsuffix.org/list .

Чтобы определить часть «сайт» домена, включающего eTLD, примените ту же практику, что и в примере с .com . Возьмем в качестве примера https://www.project.github.io:443/foo , схема — https , eTLD — .github.io , а eTLD+1 — project.github.io , поэтому https://project.github.io считается «сайтом» для этого URL.

Сайт (eTLD+1)
Части URL-адреса с eTLD.

«на одном сайте» и «на разных сайтах»

Веб-сайты, имеющие одинаковую схему и одинаковый eTLD+1, считаются «односайтовыми». Веб-сайты, имеющие разную схему или разный eTLD+1, считаются «межсайтовыми».

Происхождение А Происхождение B «Односайтовый» или «межсайтовый»?
https://www.example.com:443 https://www.evil.com :443 Межсайтовый: разные домены
https:// логин .example.com:443 Один и тот же сайт: разные поддомены не имеют значения
http ://www.example.com:443 Кросс-сайт: разные схемы
https://www.example.com: 80 Один и тот же сайт: разные порты не имеют значения
https://www.example.com:443 Тот же сайт: точное совпадение
https://www.example.com На одном сайте: порты не имеют значения

«Бессхемный тот же сайт»

схема без тот же сайт

Определение "same-site" изменено, чтобы включить схему URL как часть сайта, чтобы предотвратить использование HTTP в качестве слабого канала . Старая концепция "same-site" без сравнения схем теперь называется "schemeless same-site". Например, http://www.example.com и https://www.example.com считаются schemeless same-site, но не same-site, потому что имеет значение только часть eTLD+1, а схема не учитывается.

Происхождение А Происхождение B «Безсхемный односайтовый» или «межсайтовый»?
https://www.example.com:443 https://www.evil.com :443 Межсайтовый: разные домены
https:// логин .example.com:443 Schemeless same-site: разные поддомены не имеют значения
http ://www.example.com:443 Бессхемный тот же сайт: разные схемы не имеют значения
https://www.example.com: 80 Бессхемный тот же сайт: разные порты не имеют значения
https://www.example.com:443 Схема без одного и того же сайта: точное совпадение
https://www.example.com Бессхемный тот же сайт: порты не имеют значения

Как проверить, является ли запрос «того же сайта», «того же источника» или «межсайтовым»

Browser Support

  • Хром: 76.
  • Край: 79.
  • Firefox: 90.
  • Сафари: 16.4.

Source

Все современные браузеры отправляют запросы с HTTP-заголовком Sec-Fetch-Site . Заголовок имеет одно из следующих значений:

  • cross-site
  • same-site (относится к схематичному тому же сайту)
  • same-origin
  • none

Вы можете проверить значение Sec-Fetch-Site , чтобы определить, является ли запрос запросом того же сайта, того же источника или межсайтовым.

Вы можете обоснованно доверять значению заголовка Sec-Fetch-Site , потому что: